home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Visual Basic Source Code
/
Visual Basic Source Code.iso
/
vbsource
/
vbdatabs
/
ehandler.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-03-30
|
10KB
|
231 lines
// ------------------------------- //
// -------- Start of File -------- //
// ------------------------------- //
// ----------------------------------------------------------- //
// C++ Header File Name: ehandler.h
// Compiler Used: MSVC40, DJGPP 2.7.2.1, GCC 2.7.2.1, HP CPP 10.24
// Produced By: Doug Gaer
// File Creation Date: 02/14/1996
// Date Last Modified: 03/30/1999
// Copyright (c) 1997 Douglas M. Gaer
// ----------------------------------------------------------- //
// ---------- Include File Description and Details ---------- //
// ----------------------------------------------------------- //
/*
The VBD C++ classes are copyright (c) 1997, by Douglas M. Gaer.
All those who put this code or its derivatives in a commercial
product MUST mention this copyright in their documentation for
users of the products in which this code or its derivative
classes are used. Otherwise, you have the freedom to redistribute
verbatim copies of this source code, adapt it to your specific
needs, or improve the code and release your improvements to the
public provided that the modified files carry prominent notices
stating that you changed the files and the date of any change.
THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.
THE ENTIRE RISK OF THE QUALITY AND PERFORMANCE OF THIS SOFTWARE
IS WITH YOU. SHOULD ANY ELEMENT OF THIS SOFTWARE PROVE DEFECTIVE,
YOU WILL ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR
CORRECTION.
The Ehandler class is used to catch program exceptions that
occur at run-time. This implementation can be used with or
without C++ built-in exception handling. If C++ exception
handling is not enabled with the CPP_EXCEPTIONS macro, then
the EHandler class can be used to display program errors,
exit the program, or trap a program error with a user defined
Action Function.
Changes:
================================================================
12/16/1997 - Combined the Console, Curses, and wxWindows version,
using the CONSOLE, CURSES, and wxWINDOWS macros to conditionally
compile.
Added by: Doug Gaer
12/16/1997 - Added the wxincs.h file for wxWindows include files.
Added by: Doug Gaer
02/04/1998 - Added CParseError, CNoObjectsExist and CBadClassID
exceptions.
Added by: Doug Gaer
02/06/1998 - Added CSyncError exception.
Added by: Doug Gaer
03/13/1998 - Added CAccessViolation exception.
Added by: Doug Gaer
03/13/1998 - Added CAccessViolation exception.
Added by: Doug Gaer
09/01/1998 - Added CChecksumError exception.
Added by: Doug Gaer
03/30/1999 - Changed the __wxWINDOWS__ macro to __wxWIN168B and
added the __wxWIN201__ macro for wxWindows version 2.0.1
Changed by: Doug Gaer
================================================================
*/
// ----------------------------------------------------------- //
#ifndef __EHANDLER_HPP
#define __EHANDLER_HPP
// Macro used turn on C++'s exception handling in applications
// #ifndef CPP_EXCEPTIONS
// #define CPP_EXCEPTIONS
// #endif
// Macros used to select display types for error messaging
// ===========================================================
// #ifndef __wxWIN168B__
// #define __wxWIN168B__ // wxWindows 1.68B GUI
// #endif
// #ifndef __wxWIN201__
// #define __wxWIN201__ // wxWindows 2.0.1 GUI
// #endif
// #ifndef __CONSOLE__
// #define __CONSOLE__ // Console (stdout) display
// #endif
// #ifndef __CURSES__
// #define __CURSES__ // Curses port for terminal sessions
// #endif
// ===========================================================
const int FatalErrorLevel = 1; // Return value to Operating System
const int DisplayOn = 1; // Display the exception
const int DisplayOff = 0; // Do not display the exception
const int MessageCount = 36; // Number of exception messages
typedef void (*AF)(); // Function pointer for action function
class EHandler
{
public:
enum { // Exception Handler error codes
None, // No exception
FileNotReady, // File not ready (failed or closed file)
FileNotWriteable, // Could not write to file
ReadOnlyFile, // Trying to write to read-only file
FileNotOpenError, // Trying to use a closed file
FileCreationError, // Error creating file
FileOpenError, // Error opening file
FileCloseError, // Error closing file
FileSeekError, // Error seeking in file
FileReadError, // Error reading file
FileWriteError, // Error writing to file
EOFError, // Unexpected end of file
WrongFileType, // Wrong file type
FileCorrupt, // File corrupted
FileExists, // File already exists
NoFileExists, // No such file exists
PathError, // Invalid path
DanglingPtr, // Dangling reference counted pointer
NullPtr, // Accessing a null pointer
CacheFull, // Cache full
StkFull, // Stack full
StkEmpty, // Stack empty
AssertError, // Assertion failed
NoDatabaseOpen, // No database open
ObjectExists, // Object already exists
BadObjectAddress, // Bad object address
BadReference, // Bad Reference
DivideByZero, // Divide By Zero Error
OverFlow, // Math overflow
UnderFlow, // Math under-flow
ParseError, // Parse error
NoObjectsExist, // No objects exist
BadClassID, // Wrong object type
SyncError, // Synchronization Error
AccessViolation, // Access Violation
ChecksumError // Checksum Error
};
enum { // Exception Handler error levels
FATAL = 0x0010, // Fatal error, terminate program immediately
DISPLAY = 0x0020 // Dummy handler that does nothing
};
public:
EHandler() { ExceptionCode = None; }
virtual ~EHandler();
public:
virtual void DisplayException();
virtual void DisplayException(int ECode);
// Display exception, exit the program, do nothing, or handle exception
virtual void SignalException
(int ECode, int Level = FATAL, int DisplayError = DisplayOn);
// Display a program message
virtual void Message
(const char *mesg1=" ", const char *mesg2=" ", const char *mesg3=" ");
// Exception handler used to handle user defined routines to trap
// a program error
void TrapException(AF ActionFunction);
void SetException(int ECode) { ExceptionCode = ECode; }
int Exception() { return ExceptionCode; }
void ClearException() { ExceptionCode = None; }
protected:
virtual void Terminate();
int ExceptionCode;
};
extern EHandler ExceptionHandler;
extern EHandler *Error; // Global exception handler pointer
#ifdef CPP_EXCEPTIONS
// Class declarations for exceptions representing program errors.
// This implementation is provided for use C++'s built-in exception
// handling routines.
class CNone : public EHandler { }; // No exception
class CFileNotReady : public EHandler { }; // File not ready
class CFileNotWriteable : public EHandler { }; // Could not write to file
class CReadOnlyFile : public EHandler { }; // Writing to read-only file
class CFileNotOpenError : public EHandler { }; // Using a closed file
class CFileCreationError : public EHandler { }; // Error creating file
class CFileOpenError : public EHandler { }; // Error opening file
class CFileCloseError : public EHandler { }; // Error closing file
class CFileSeekError : public EHandler { }; // Error seeking in file
class CFileReadError : public EHandler { }; // Error reading file
class CFileWriteError : public EHandler { }; // Error writing to file
class CEOFError : public EHandler { }; // Unexpected end of file
class CWrongFileType : public EHandler { }; // Wrong file type
class CFileCorrupt : public EHandler { }; // File corrupted
class CFileExists : public EHandler { }; // File already exists
class CNoFileExists : public EHandler { }; // No such file exists
class CPathError : public EHandler { }; //